The 16-Bit language tools consist of an assembler (pic30-as.exe) and a linker (pic30-ld.exe). These tools are sometimes referred to as the "ASM30 Suite". The user's guide describes additional utilities that are not supported by the MPLAB IDE and therefore are not supplied in this release.
With the exceptions noted below, the 16-Bit tools are written and distributed under the GNU General Public License (GPL) which means that its source code is freely distributed and available to the public.
The source for the tools under the GNU GPL may be downloaded separately from the Microchip WWW web page. You may read the GNU GPL in the file named COPYING located the top level of your install directory. A general discussion of principles underlying the GPL may be found at www.gnu.org/copyleft.
Exceptions to the GNU GPL:
Support code provided for the header files, linker scripts, and runtime libraries are also exceptions to, and therefore not covered under, the GPL.
The following dsPIC30 devices are supported:
dsPIC30F1010 dsPIC30F2010 dsPIC30F3010 dsPIC30F4011 dsPIC30F5011 dsPIC30F6010
dsPIC30F2011 dsPIC30F3011 dsPIC30F4012 dsPIC30F5013 dsPIC30F6010A
dsPIC30F2012 dsPIC30F3012 dsPIC30F4013 dsPIC30F5015 dsPIC30F6011
dsPIC30F2020 dsPIC30F3013 dsPIC30F5016 dsPIC30F6011A
dsPIC30F2023 dsPIC30F3014 dsPIC30F6012
dsPIC30F6012A
dsPIC30F6013
dsPIC30F6013A
dsPIC30F6014
dsPIC30F6014A
dsPIC30F6015
The following PIC24 devices are supported:
PIC24F04KA200 PIC24F08KA101 PIC24F16KA101 PIC24F32KA101
PIC24F04KA201 PIC24F08KA102 PIC24F16KA102 PIC24F32KA102
PIC24FJ16GA002 PIC24FJ32GA002
PIC24FJ16GA004 PIC24FJ32GA004
PIC24FJ48GA002 PIC24FJ64GA002 PIC24FJ96GA006 PIC24FJ128GA006
PIC24FJ48GA004 PIC24FJ64GA004 PIC24FJ96GA008 PIC24FJ128GA008
PIC24FJ64GA006 PIC24FJ96GA010 PIC24FJ128GA010
PIC24FJ64GA008 PIC24FJ128GA106
PIC24FJ64GA010 PIC24FJ128GA108
PIC24FJ64GA106 PIC24FJ128GA110
PIC24FJ64GA108
PIC24FJ64GA110
PIC24FJ192GA106 PIC24FJ256GA106
PIC24FJ192GA108 PIC24FJ256GA108
PIC24FJ192GA110 PIC24FJ256GA110
PIC24FJ64GB106 PIC24FJ128GB106 PIC24FJ192GB106 PIC24FJ256GB106
PIC24FJ64GB108 PIC24FJ128GB108 PIC24FJ192GB108 PIC24FJ256GB108
PIC24FJ64GB110 PIC24FJ128GB110 PIC24FJ192GB110 PIC24FJ256GB110
PIC24HJ12GP201 PIC24HJ16GP304
PIC24HJ12GP202
PIC24HJ32GP202 PIC24HJ64GP202 PIC24HJ128GP202 PIC24HJ256GP206
PIC24HJ32GP204 PIC24HJ64GP204 PIC24HJ128GP204 PIC24HJ256GP210
PIC24HJ32GP302 PIC24HJ64GP206 PIC24HJ128GP206 PIC24HJ256GP610
PIC24HJ32GP304 PIC24HJ64GP210 PIC24HJ128GP210
PIC24HJ64GP502 PIC24HJ128GP306
PIC24HJ64GP504 PIC24HJ128GP310
PIC24HJ64GP506 PIC24HJ128GP502
PIC24HJ64GP510 PIC24HJ128GP504
PIC24HJ128GP506
PIC24HJ128GP510
The following dsPIC33 devices are supported:
dsPIC33FJ12GP201 dsPIC33FJ16GP304
dsPIC33FJ12GP202
dsPIC33FJ32GP202 dsPIC33FJ64GP202 dsPIC33FJ128GP202 dsPIC33FJ256GP506
dsPIC33FJ32GP204 dsPIC33FJ64GP204 dsPIC33FJ128GP204 dsPIC33FJ256GP510
dsPIC33FJ32GP302 dsPIC33FJ64GP206 dsPIC33FJ128GP206 dsPIC33FJ256GP710
dsPIC33FJ32GP304 dsPIC33FJ64GP306 dsPIC33FJ128GP306
dsPIC33FJ64GP310 dsPIC33FJ128GP310
dsPIC33FJ64GP706 dsPIC33FJ128GP706
dsPIC33FJ64GP708 dsPIC33FJ128GP708
dsPIC33FJ64GP710 dsPIC33FJ128GP710
dsPIC33FJ64GP802 dsPIC33FJ128GP802
dsPIC33FJ64GP804 dsPIC33FJ128GP804
dsPIC33FJ12MC201 dsPIC33FJ16MC304
dsPIC33FJ12MC202
dsPIC33FJ32MC202 dsPIC33FJ64MC202 dsPIC33FJ128MC202 dsPIC33FJ256MC510
dsPIC33FJ32MC204 dsPIC33FJ64MC204 dsPIC33FJ128MC204 dsPIC33FJ256MC710
dsPIC33FJ32MC302 dsPIC33FJ64MC506 dsPIC33FJ128MC506
dsPIC33FJ32MC304 dsPIC33FJ64MC508 dsPIC33FJ128MC510
dsPIC33FJ64MC510 dsPIC33FJ128MC706
dsPIC33FJ64GP706 dsPIC33FJ128MC708
dsPIC33FJ64GP710 dsPIC33FJ128MC710
dsPIC33FJ64GP802 dsPIC33FJ128MC802
dsPIC33FJ64GP804 dsPIC33FJ128MC804
The following 'virtual' devices are supported:
The dsPIC language tools are installed with the MPLAB IDE installer.
The following documents pertain to the MPLAB ASM30 and MPLAB LINK30, these may be installed as part of the full product or downloaded from Microchip's Web-site:
We refer to these documents throughout this README in somewhat familiar terms.
Updates to these manuals, that have not made it into (virtual) print, can be found later in this README.
This support update to version 3.01 includes 30 new devices PIC24HJ32GP302, PIC24HJ32GP304, PIC24HJ64GP202, PIC24HJ64GP204, PIC24HJ64GP502, PIC24HJ64GP504, PIC24HJ128GP202, PIC24HJ128GP204, PIC24HJ128GP502, PIC24HJ128GP504, dsPIC33FJ32GP302, dsPIC33FJ32GP304, dsPIC33FJ32MC302, dsPIC33FJ32MC304, dsPIC33FJ64GP202, dsPIC33FJ64GP204, dsPIC33FJ64GP802, dsPIC33FJ64GP804, dsPIC33FJ64MC202, dsPIC33FJ64MC204, dsPIC33FJ64MC802, dsPIC33FJ64MC804, dsPIC33FJ128GP202, dsPIC33FJ128GP204, dsPIC33FJ128GP802, dsPIC33FJ128GP804, dsPIC33FJ128MC202, dsPIC33FJ128MC204, dsPIC33FJ128MC802, dsPIC33FJ128MC804
A customer can determine if this update has been installed by examining the C30 version string. A version string is displayed by executing the following command:
pic30-as --version
| The version string before update is: | (dsPIC30, Microchip v3.01) (A) |
| The version string after update is: | (dsPIC30, Microchip v3.01) (B) |
This version includes 32 new devices: PIC24F04KA200, PIC24F08KA101, PIC24F16KA101, PIC24F32KA101, PIC24F04KA201, PIC24F08KA102, PIC24F16KA102, PIC24F32KA102, PIC24FJ64GA106, PIC24FJ128GA106, PIC24FJ192GA106, PIC24FJ256GA106, PIC24FJ64GA108, PIC24FJ128GA108, PIC24FJ192GA108, PIC24FJ256GA108, PIC24FJ64GA110, PIC24FJ128GA110, PIC24FJ192GA110, PIC24FJ256GA110, PIC24FJ64GB106, PIC24FJ128GB106, PIC24FJ192GB106, PIC24FJ256GB106, PIC24FJ64GB108, PIC24FJ128GB108, PIC24FJ192GB108, PIC24FJ256GB108, PIC24FJ64GB110, PIC24FJ128GB110, PIC24FJ192GB110, PIC24FJ256GB110
.text :
{
*(.init);
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in this order */
*(.lib*);
*(.text);
} >program
This support update to version 3.00 includes 13 new devices PIC24FJ16GA002, PIC24FJ16GA004, PIC24FJ48GA002, PIC24FJ48GA004, PIC24HJ16GP304, PIC24HJ32GP202, PIC24HJ32GP204, dsPIC33FJ16GP304, dsPIC33FJ32GP202, dsPIC33FJ32GP204, 33JF16MC304, dsPIC33FJ32MC202 and dsPIC33FJ32MC204.
A customer can determine if this update has been installed by examining the C30 version string. A version string is displayed by executing the following command:
pic30-as --version
| The version string before update is: | (dsPIC30, Microchip v3.00) (A) |
| The version string after update is: | (dsPIC30, Microchip v3.00) (B) |
This release provides a number of enhancements to make accessing the unique features of the dsPIC easier. These are summarized below, with more information available in the accompanying documentation.
Some highlights:
Most existing projects can be migrated to MPLAB C30 v3.0x without modification. Minor source code updates may be required to address the following issues.
When using an intermediate directory (selected from the Directories Tab of the Build Options For Project dialogue box) the linker may fail to link correctly if the project contains user generated assembly files. This will be corrected in a later version of MPLAB IDE, for now you may disable the intermediate directory to achieve a successful link
This has been fixed in MPLAB IDE v7.60.
/*
** User Code and Library Code
**
** This section must not be assigned to __CODE_BASE,
** because CodeGuard(tm) sections may be located there.
*/
.text :
{
*(.init);
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in this order */
*(.lib*);
*(.text);
} >program
A new symbol _PROGRAM_END is defined in program memory to mark the highest address used by a CODE or PSV section. This symbol can be used by applications as an end point for checksum calculations.
For example:
mov #tblpage(__PROGRAM_END),w0 mov #tbloffset(__PROGRAM_END),w1 .pword __PROGRAM_END .long __PROGRAM_END
*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)
stores a sequence of ascii characters (with no automatic trailing zero byte) into program memory, including the upper byte.
stores a sequence of ascii characters (with an automatic trailing zero byte) into program memory, including the upper byte.
is the same as .pasciz "string2".
The following invalid instruction
add w0, #52, w0
now correctly reports that operand #2 should be between 0 and 31 inclusive.
The following invalid statement
.section ,code
is now rejected by the assembler.
This assembler bug may have adversely impacted C applications that utilize pointers to boot or secure functions. The symptom would be an unexpected program reset, possibly dependant on optimization level.
The following example is not encoded correctly:
.equiv var1,root+1
.equiv var2,var1
.word var1 ; encodes root+1
.word var2 ; encodes root
This can happen when the value specified in .equiv is the name of an SFR high byte such as _LATBH, which is defined in the processor include files as an .equiv. The workaround in this case would be to refer to the base register itself, i.e. _LATB+1
The following assembly statements will cause a failure:
.equ foo,bar .equ baz,foo .word baz
In this example, bar is an undefined symbol, while foo and baz are indirect references to bar. The second level of indirection is causing the failure. The following sequences work fine:
.equ foo,bar .word foo ; one level of indirection .equ bar,9 .equ foo,bar .equ baz,foo .word baz ; two levels of indirection to a literal constant
If a linker script is modified to place the .text section from one object file before all the others, multiple definition errors can result. When this occurs the linker acts as if the section was included twice. The workaround is to specify a full pathname, or *, before the object file name:
/*
** User Code and Library Code
*/
.text :
{
*(.init);
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in
this order */
*(.lib*);
myfile.o(.text); /* this form causes error */
*myfile.o(.text); /* this form works OK */
*(.text);
} >program
Some addresses will be invalid for the address attribute, notably those that are used for the .handle, .libc, .libm, .libdsp and other .lib sections.
Addresses that conflict the .text section can be accommodated by modifying the linker script. To modify the linker script, simply remove the .text section from the list of input sections for the output section named .text. For example, it may be modified to read:
/*
** User Code and Library Code
*/
.text :
{
*(.init);
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in
this order */
*(.lib*);
/* *(.text); */
} >program
This will cause the linker to place the .text input
sections after satisfying all of the absolute section
requirements.On certain devices, applications with large amounts of auto_psv data may fail to link with this message, even though the total amount of memory used does not exceed the flash capacity. This is because sections .text and .const have each been allocated in large blocks and the PSV page alignment requirement can't be satisfied.
As a workaround, comment out one line of the linker script as noted above for BIN30-30. This will allow section .text to be allocated in smaller portions, flowing around .const if necessary.
Note that noload in this case is redundant and can be removed.
This error can be avoided if another code section is defined in the same file without the address() attribute.
This installation makes no changes to the way environment variables have been updated previously.
Modified environment variables are identified as part of the installation procedure and are documented in the manuals.
Microchip provides online support via our web site at www.microchip.com. This web site is used as a means to make files and information easily available to customers. Accessible by using your favorite Internet browser, the web site contains the following information:
Microchip's customer notification service helps keep customers current on Microchip products. Subscribers will receive e-mail notification whenever there are changes, updates, revisions or errata related to a specified product family or development tool of interest.
To register, access the Microchip web site at www.microchip.com, click on Customer Change Notification and follow the registration instructions.
The Development Systems product group categories are:
Users of Microchip products can receive assistance through several channels:
Customers should contact their distributor, representative or field application engineer (FAE) for support. Local sales offices are also available to help customers. A listing of sales offices and locations is available on our website.
Technical support is available through the web site at: http://support.microchip.com